package com.zenithmind.task.pojo.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.zenithmind.common.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 任务评论实体类
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("task_comment")
public class TaskComment extends BaseEntity {

    /**
     * 评论ID
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private String id;

    /**
     * 任务ID
     */
    @TableField("task_id")
    private String taskId;

    /**
     * 任务标题
     */
    @TableField("task_title")
    private String taskTitle;

    /**
     * 父评论ID
     */
    @TableField("parent_id")
    private String parentId;

    /**
     * 根评论ID
     */
    @TableField("root_id")
    private String rootId;

    /**
     * 评论层级
     */
    @TableField("level")
    private Integer level;

    /**
     * 评论内容
     */
    @TableField("content")
    private String content;

    /**
     * 评论类型：1-普通评论，2-状态变更，3-分配变更，4-进度更新，5-系统日志
     */
    @TableField("comment_type")
    private Integer commentType;

    /**
     * 评论者ID
     */
    @TableField("commenter_id")
    private String commenterId;

    /**
     * 评论者名称
     */
    @TableField("commenter_name")
    private String commenterName;

    /**
     * 评论者头像
     */
    @TableField("commenter_avatar")
    private String commenterAvatar;

    /**
     * 被回复人ID
     */
    @TableField("reply_to_id")
    private String replyToId;

    /**
     * 被回复人名称
     */
    @TableField("reply_to_name")
    private String replyToName;

    /**
     * 提及的用户ID列表（JSON格式）
     */
    @TableField("mentioned_users")
    private String mentionedUsers;

    /**
     * 附件信息（JSON格式）
     */
    @TableField("attachments")
    private String attachments;

    /**
     * 点赞数
     */
    @TableField("like_count")
    private Integer likeCount;

    /**
     * 回复数
     */
    @TableField("reply_count")
    private Integer replyCount;

    /**
     * 是否置顶
     */
    @TableField("is_pinned")
    private Integer isPinned;

    /**
     * 是否已编辑
     */
    @TableField("is_edited")
    private Integer isEdited;

    /**
     * 编辑时间
     */
    @TableField("edit_time")
    private String editTime;

    /**
     * IP地址
     */
    @TableField("ip_address")
    private String ipAddress;

    /**
     * 用户代理
     */
    @TableField("user_agent")
    private String userAgent;

    /**
     * 状态：0-删除，1-正常，2-隐藏
     */
    @TableField("status")
    private Integer status;

    /**
     * 备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 是否删除：0-删除，1-正常
     */
    @TableField("is_deleted")
    @TableLogic
    private Integer isDeleted;
}
